package cn.wolfcode.wolf2w.strategy.service;

import cn.wolfcode.wolf2w.strategy.api.domain.Strategy;
import cn.wolfcode.wolf2w.strategy.api.domain.StrategyContent;
import cn.wolfcode.wolf2w.strategy.query.StrategyQuery;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * 攻略Service接口
 * 
 * @author dafei
 * @date 2023-11-22
 */
public interface IStrategyService extends IService<Strategy>{
    /**
    * 分页
    * @param qo
    * @return
    */
    IPage<Strategy> queryPage(StrategyQuery qo);

    /**
     * 查询内容
     * @param id
     * @return
     */
    StrategyContent getContent(Long id);

    /**
     * 通过分类id查询
     * @param cid
     * @return
     */
    List<Strategy> queryByCatalogId(Long cid);

    /**
     * 点击量前3
     * @param destId
     * @return
     */
    List<Strategy> queryVeiwnumTop3(Long destId);

    /**
     * 阅读数统计
     * @param sid
     * @return
     */
    Map<String, Object> viewnumIncr(Long sid);
    /**
     * 回复数统计
     * @param sid
     * @return
     */
    Map<String, Object> replynumIncr(Long sid);

    /**
     * 攻略收藏
     * @param sid
     * @return
     */
    Map<String, Object> favor(Long sid);

    /**
     * 判断用户是否收藏指定攻略id
     * @param uid
     * @param sid
     * @return
     */
    Boolean isUserFavor(Long uid, Long sid);
    /**
     * 攻略点赞
     * @param sid
     * @return
     */
    Map<String, Object> thumbsup(Long sid);

    /**
     * 攻略hash数据初始化
     * @param id
     * @return
     */
    String initStrategyHash(Long id);

    /**
     * 攻略统计数持久化
     */
    void redisDataPersistenceHandle();
}
